പൈത്തണും ഇൻഫ്ലക്സ്ഡിബിയും ഉപയോഗിച്ച് ടൈം സീരീസ് ഡാറ്റ കൈകാര്യം ചെയ്യാനും വിശകലനം ചെയ്യാനും പഠിക്കുക. സജ്ജീകരണം, ഡാറ്റ എഴുത്ത്, ഫ്ലക്സ് ഉപയോഗിച്ചുള്ള ചോദ്യങ്ങൾ, മികച്ച രീതികൾ എന്നിവ ഈ ഗൈഡ് വിശദീകരിക്കുന്നു.
ടൈം സീരീസ് ഡാറ്റയിൽ വൈദഗ്ദ്ധ്യം നേടുക: പൈത്തണും ഇൻഫ്ലക്സ്ഡിബി സംയോജനവും സംബന്ധിച്ച ഒരു സമഗ്ര ഗൈഡ്
ഇന്നത്തെ ഡാറ്റാധിഷ്ഠിത ലോകത്ത്, നിരവധി വ്യവസായങ്ങളിൽ കൂടുതൽ പ്രാധാന്യമർഹിക്കുന്ന ഒരു പ്രത്യേകതരം ഡാറ്റയുണ്ട്: ടൈം സീരീസ് ഡാറ്റ. ഡെവോപ്സ് പൈപ്പ്ലൈനുകളിൽ സെർവർ മെട്രിക്സ് നിരീക്ഷിക്കുന്നത് മുതൽ ഐഒടി നെറ്റ്വർക്കുകളിൽ സെൻസർ റീഡിംഗുകൾ ട്രാക്ക് ചെയ്യുന്നതിനും സാമ്പത്തിക വിപണികളിൽ സ്റ്റോക്ക് വിലകൾ വിശകലനം ചെയ്യുന്നതിനും വരെ, ടൈംസ്റ്റാമ്പുകളുമായി ബന്ധപ്പെട്ട ഡാറ്റാ പോയിൻ്റുകൾ എല്ലായിടത്തും ഉണ്ട്. എന്നിരുന്നാലും, ഈ ഡാറ്റ കാര്യക്ഷമമായി കൈകാര്യം ചെയ്യുന്നത് പരമ്പരാഗത റിലേഷണൽ ഡാറ്റാബേസുകൾ രൂപകൽപ്പന ചെയ്തിട്ടില്ലാത്ത തനതായ വെല്ലുവിളികൾ ഉയർത്തുന്നു.
ഇവിടെയാണ് സ്പെഷ്യലൈസ്ഡ് ടൈം സീരീസ് ഡാറ്റാബേസുകൾ (TSDB) പ്രാധാന്യമർഹിക്കുന്നത്. ഈ രംഗത്തെ പ്രമുഖരിൽ ഒന്നാണ് ഇൻഫ്ലക്സ്ഡിബി, ടൈം സ്റ്റാമ്പ് ചെയ്ത ഡാറ്റ കൈകാര്യം ചെയ്യുന്നതിനായി പ്രത്യേകം നിർമ്മിച്ച ഉയർന്ന പ്രവർത്തനക്ഷമതയുള്ള, ഓപ്പൺ സോഴ്സ് ഡാറ്റാബേസ്. പൈത്തണിൻ്റെ വൈവിധ്യവും ശക്തമായ ഡാറ്റാ സയൻസ് ഇക്കോസിസ്റ്റവുമായി ഇത് സംയോജിപ്പിക്കുമ്പോൾ, സ്കേലബിളും ഉൾക്കാഴ്ചയുമുള്ള ടൈം സീരീസ് ആപ്ലിക്കേഷനുകൾ നിർമ്മിക്കുന്നതിനുള്ള അവിശ്വസനീയമാംവിധം ശക്തമായ ഒരു സ്റ്റാക്ക് ഇത് സൃഷ്ടിക്കുന്നു.
പൈത്തണിനെ ഇൻഫ്ലക്സ്ഡിബിയുമായി സംയോജിപ്പിക്കാൻ ആവശ്യമായ എല്ലാ കാര്യങ്ങളിലൂടെയും ഈ സമഗ്ര ഗൈഡ് നിങ്ങളെ കൊണ്ടുപോകും. അടിസ്ഥാനപരമായ ആശയങ്ങൾ, എൻവയോൺമെൻ്റ് സജ്ജീകരണം, ഡാറ്റ എഴുതുന്നതും ചോദ്യം ചെയ്യുന്നതും, ഒരു പ്രായോഗിക യഥാർത്ഥ ലോക ഉദാഹരണം, ഉൽപ്പാദനത്തിന് തയ്യാറായ സിസ്റ്റങ്ങൾ നിർമ്മിക്കുന്നതിനുള്ള അത്യാവശ്യമായ മികച്ച രീതികൾ എന്നിവ ഞങ്ങൾ ചർച്ച ചെയ്യും. നിങ്ങൾ ഒരു ഡാറ്റാ എഞ്ചിനീയറോ, ഡെവോപ്സ് പ്രൊഫഷണലോ, അല്ലെങ്കിൽ ഒരു ഡാറ്റാ സയൻ്റിസ്റ്റോ ആകട്ടെ, നിങ്ങളുടെ ടൈം സീരീസ് ഡാറ്റയിൽ വൈദഗ്ദ്ധ്യം നേടാനുള്ള കഴിവുകൾ ഈ ലേഖനം നിങ്ങൾക്ക് നൽകും.
അടിസ്ഥാന ആശയങ്ങൾ മനസ്സിലാക്കുക
കോഡ് എഴുതുന്നതിന് മുമ്പ്, ഇൻഫ്ലക്സ്ഡിബിയുടെ അടിസ്ഥാനപരമായ ആശയങ്ങൾ മനസ്സിലാക്കുന്നത് നിർണായകമാണ്. കാര്യക്ഷമമായ ഒരു ഡാറ്റാ സ്കീമ രൂപകൽപ്പന ചെയ്യാനും ഫലപ്രദമായ ചോദ്യങ്ങൾ എഴുതാനും ഇത് നിങ്ങളെ സഹായിക്കും.
എന്താണ് ഇൻഫ്ലക്സ്ഡിബി?
ടൈം സീരീസ് ഡാറ്റയുടെ വേഗതയേറിയതും ഉയർന്ന ലഭ്യതയുള്ളതുമായ സംഭരണത്തിനും വീണ്ടെടുക്കലിനുമായി ഒപ്റ്റിമൈസ് ചെയ്ത ഒരു ഡാറ്റാബേസാണ് ഇൻഫ്ലക്സ്ഡിബി. PostgreSQL അല്ലെങ്കിൽ MySQL പോലുള്ള ഒരു പൊതു-ഉപയോഗ ഡാറ്റാബേസിൽ നിന്ന് വ്യത്യസ്തമായി, ഇൻഫ്ലക്സ്ഡിബിയുടെ ആന്തരിക ഘടന ടൈം സീരീസ് വർക്ക്ലോഡുകളുടെ പ്രത്യേക പാറ്റേണുകൾ—അതായത്, ഉയർന്ന തോതിലുള്ള എഴുത്തുകളും സമയ-കേന്ദ്രീകൃത ചോദ്യങ്ങളും—കൈകാര്യം ചെയ്യുന്നതിനായി ആദ്യം മുതൽ രൂപകൽപ്പന ചെയ്തിട്ടുള്ളതാണ്.
ഇത് രണ്ട് പ്രധാന പതിപ്പുകളിൽ ലഭ്യമാണ്:
- ഇൻഫ്ലക്സ്ഡിബി ഒഎസ്എസ്: നിങ്ങളുടെ സ്വന്തം ഇൻഫ്രാസ്ട്രക്ചറിൽ ഹോസ്റ്റ് ചെയ്യാൻ കഴിയുന്ന ഓപ്പൺ സോഴ്സ് പതിപ്പ്.
- ഇൻഫ്ലക്സ്ഡിബി ക്ലൗഡ്: പൂർണ്ണമായി കൈകാര്യം ചെയ്യപ്പെടുന്ന, മൾട്ടി-ക്ലൗഡ് ഡാറ്റാബേസ്-ആസ്-എ-സർവീസ് (DBaaS) സേവനം.
ഈ ഗൈഡിനായി, രണ്ട് പതിപ്പുകൾക്കും ബാധകമായ ആശയങ്ങളിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കും, ഉദാഹരണങ്ങൾക്കായി ഒരു ലോക്കൽ ഒഎസ്എസ് ഇൻസ്റ്റൻസ് ഉപയോഗിക്കുന്നു.
പ്രധാന ഇൻഫ്ലക്സ്ഡിബി പദാവലി
ഇൻഫ്ലക്സ്ഡിബിക്ക് അതിൻ്റേതായ ഡാറ്റാ മോഡലും പദാവലിയുമുണ്ട്. ഈ പദങ്ങൾ മനസ്സിലാക്കുന്നത് ഇത് ഫലപ്രദമായി ഉപയോഗിക്കുന്നതിനുള്ള ആദ്യപടിയാണ്.
- ഡാറ്റാ പോയിൻ്റ്: ഇൻഫ്ലക്സ്ഡിബിയിലെ ഡാറ്റയുടെ അടിസ്ഥാന യൂണിറ്റ്. ഒരു ഡാറ്റാ പോയിൻ്റിൽ നാല് ഘടകങ്ങളുണ്ട്:
- മെഷർമെൻ്റ്: നിങ്ങളുടെ ഡാറ്റയ്ക്കുള്ള ഒരു കണ്ടെയ്നറായി പ്രവർത്തിക്കുന്ന ഒരു സ്ട്രിംഗ്, SQL-ലെ ഒരു ടേബിൾ നാമത്തിന് സമാനമായി. ഉദാഹരണത്തിന്,
cpu_usageഅല്ലെങ്കിൽtemperature_readings. - ടാഗ് സെറ്റ്: ഡാറ്റയെക്കുറിച്ചുള്ള മെറ്റാഡാറ്റ സംഭരിക്കുന്ന കീ-വാല്യൂ ജോഡികളുടെ (രണ്ടും സ്ട്രിംഗുകൾ) ഒരു ശേഖരം. ടാഗുകൾ ഇൻഡെക്സ് ചെയ്തിരിക്കുന്നതിനാൽ, ചോദ്യങ്ങളിൽ ഫിൽട്ടറിംഗിനും ഗ്രൂപ്പുചെയ്യുന്നതിനും അവ അനുയോജ്യമാണ്. ഉദാഹരണങ്ങൾ:
host=server_A,region=us-east-1,sensor_id=T-1000. - ഫീൽഡ് സെറ്റ്: യഥാർത്ഥ ഡാറ്റാ മൂല്യങ്ങളെ പ്രതിനിധീകരിക്കുന്ന കീ-വാല്യൂ ജോഡികളുടെ ഒരു ശേഖരം. ഫീൽഡ് മൂല്യങ്ങൾ ഇൻ്റിജറുകൾ, ഫ്ലോട്ടുകൾ, ബൂളിയനുകൾ അല്ലെങ്കിൽ സ്ട്രിംഗുകൾ ആകാം. ഫീൽഡുകൾ ഇൻഡെക്സ് ചെയ്യപ്പെടാത്തതിനാൽ, ചോദ്യങ്ങളിലെ `WHERE` ക്ലോസുകളിൽ ഉപയോഗിക്കാൻ അവ കാര്യക്ഷമമല്ല. ഉദാഹരണങ്ങൾ:
value=98.6,load=0.75,is_critical=false. - ടൈംസ്റ്റാമ്പ്: ഡാറ്റാ പോയിൻ്റുമായി ബന്ധപ്പെട്ട ടൈംസ്റ്റാമ്പ്, നാനോസെക്കൻഡ് കൃത്യതയോടെ. ഇൻഫ്ലക്സ്ഡിബിയിലെ എല്ലാ ഡാറ്റയുടെയും കേന്ദ്ര സംഘാടക തത്വമാണിത്.
- മെഷർമെൻ്റ്: നിങ്ങളുടെ ഡാറ്റയ്ക്കുള്ള ഒരു കണ്ടെയ്നറായി പ്രവർത്തിക്കുന്ന ഒരു സ്ട്രിംഗ്, SQL-ലെ ഒരു ടേബിൾ നാമത്തിന് സമാനമായി. ഉദാഹരണത്തിന്,
- ബക്കറ്റ്: ഡാറ്റ സംഭരിക്കുന്ന ഒരു പേരുള്ള സ്ഥലം. ഇത് ഒരു പരമ്പരാഗത RDBMS-ലെ ഒരു 'ഡാറ്റാബേസിന്' സമാനമാണ്. ഒരു ബക്കറ്റിന് ഒരു റീടെൻഷൻ പോളിസി ഉണ്ട്, അത് ഡാറ്റ എത്രകാലം സൂക്ഷിക്കണമെന്ന് നിർവചിക്കുന്നു.
- ഓർഗനൈസേഷൻ (ഓർഗ്): ഒരു കൂട്ടം ഉപയോക്താക്കൾക്കായുള്ള ഒരു വർക്ക്സ്പേസ്. ബക്കറ്റുകൾ, ഡാഷ്ബോർഡുകൾ, ടാസ്ക്കുകൾ എന്നിവ പോലുള്ള എല്ലാ വിഭവങ്ങളും ഒരു ഓർഗനൈസേഷന്റെ ഭാഗമാണ്.
ഇതിനെ ഇങ്ങനെ ചിന്തിക്കുക: നിങ്ങൾ താപനില ഡാറ്റ ലോഗ് ചെയ്യുകയാണെങ്കിൽ, നിങ്ങളുടെ മെഷർമെൻ്റ് `environment_sensors` ആയിരിക്കാം. ഡാറ്റ എവിടെ, എന്ത് സൃഷ്ടിച്ചു എന്ന് വിവരിക്കുന്നതിന് ടാഗുകൾ `location=lab_1` ഉം `sensor_type=DHT22` ഉം എന്നിങ്ങനെയാകാം. ഫീൽഡുകൾ യഥാർത്ഥ റീഡിംഗുകളായിരിക്കും, `temperature=22.5` ഉം `humidity=45.1` ഉം പോലെ. തീർച്ചയായും, ഓരോ റീഡിംഗിനും ഒരു തനതായ ടൈംസ്റ്റാമ്പ് ഉണ്ടായിരിക്കും.
നിങ്ങളുടെ എൻവയോൺമെൻ്റ് സജ്ജീകരിക്കുന്നു
ഇപ്പോൾ, ആവശ്യമായ ടൂളുകൾ സജ്ജീകരിക്കുന്നതിലേക്ക് കടക്കാം. ഇൻഫ്ലക്സ്ഡിബി വേഗത്തിലും ആഗോളതലത്തിൽ സ്ഥിരതയോടെയും സജ്ജീകരിക്കുന്നതിന് ഞങ്ങൾ ഡോക്കർ ഉപയോഗിക്കും.
ഡോക്കർ ഉപയോഗിച്ച് ഇൻഫ്ലക്സ്ഡിബി ഇൻസ്റ്റാൾ ചെയ്യുന്നു
സേവനങ്ങൾ പ്രവർത്തിപ്പിക്കുന്നതിന് ഡോക്കർ ശുദ്ധവും ഒറ്റപ്പെട്ടതുമായ ഒരു എൻവയോൺമെൻ്റ് നൽകുന്നു. നിങ്ങൾക്ക് ഡോക്കർ ഇൻസ്റ്റാൾ ചെയ്തിട്ടില്ലെങ്കിൽ, നിങ്ങളുടെ ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിനായുള്ള ഔദ്യോഗിക ഡോക്യുമെൻ്റേഷൻ റഫർ ചെയ്യുക.
ഒരു ഇൻഫ്ലക്സ്ഡിബി 2.x കണ്ടെയ്നർ ആരംഭിക്കുന്നതിന്, നിങ്ങളുടെ ടെർമിനൽ തുറന്ന് താഴെ പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കുക:
docker run --name influxdb -p 8086:8086 influxdb:latest
ഈ കമാൻഡ് ഏറ്റവും പുതിയ ഇൻഫ്ലക്സ്ഡിബി ഇമേജ് ഡൗൺലോഡ് ചെയ്യുകയും, `influxdb` എന്ന പേരിൽ ഒരു കണ്ടെയ്നർ ആരംഭിക്കുകയും, നിങ്ങളുടെ ലോക്കൽ മെഷീനിലെ 8086 പോർട്ട് കണ്ടെയ്നറിനുള്ളിലെ 8086 പോർട്ടിലേക്ക് മാപ്പ് ചെയ്യുകയും ചെയ്യുന്നു. ഇത് ഇൻഫ്ലക്സ്ഡിബി API-യുടെ ഡിഫോൾട്ട് പോർട്ടാണ്.
പ്രാരംഭ ഇൻഫ്ലക്സ്ഡിബി സജ്ജീകരണം
കണ്ടെയ്നർ പ്രവർത്തിച്ചുതുടങ്ങിയാൽ, നിങ്ങളുടെ വെബ് ബ്രൗസറിൽ http://localhost:8086 എന്നതിലേക്ക് നാവിഗേറ്റ് ചെയ്തുകൊണ്ട് ഇൻഫ്ലക്സ്ഡിബി യൂസർ ഇൻ്റർഫേസ് (UI) ആക്സസ് ചെയ്യാവുന്നതാണ്.
- "വെൽക്കം ടു ഇൻഫ്ലക്സ്ഡിബി" എന്ന സജ്ജീകരണ സ്ക്രീൻ നിങ്ങളെ സ്വാഗതം ചെയ്യും. "ഗെറ്റ് സ്റ്റാർട്ടഡ്" ക്ലിക്ക് ചെയ്യുക.
- യൂസർ സജ്ജീകരണം: ഒരു പ്രാഥമിക യൂസറെ സൃഷ്ടിക്കാൻ നിങ്ങളോട് ആവശ്യപ്പെടും. ഒരു യൂസർനെയിമും പാസ്വേഡും പൂരിപ്പിക്കുക.
- പ്രാഥമിക ഓർഗനൈസേഷനും ബക്കറ്റും: നിങ്ങളുടെ പ്രാഥമിക ഓർഗനൈസേഷന് (ഉദാഹരണത്തിന്, `my-org`) ഒരു പേരും നിങ്ങളുടെ ആദ്യത്തെ ബക്കറ്റിന് (ഉദാഹരണത്തിന്, `my-bucket`) ഒരു പേരും നൽകുക.
- നിങ്ങളുടെ ടോക്കൺ സംരക്ഷിക്കുക: സജ്ജീകരണം പൂർത്തിയാക്കിയ ശേഷം, ഇൻഫ്ലക്സ്ഡിബി നിങ്ങളുടെ പ്രാരംഭ അഡ്മിൻ ടോക്കൺ പ്രദർശിപ്പിക്കും. ഇത് വളരെ പ്രധാനമാണ്! ഈ ടോക്കൺ പകർത്തി ഒരു സുരക്ഷിത സ്ഥലത്ത് സംരക്ഷിക്കുക. നിങ്ങളുടെ പൈത്തൺ സ്ക്രിപ്റ്റിൽ നിന്ന് ഡാറ്റാബേസുമായി സംവദിക്കാൻ ഇത് ആവശ്യമാണ്.
സജ്ജീകരണത്തിന് ശേഷം, നിങ്ങളെ പ്രധാന ഇൻഫ്ലക്സ്ഡിബി ഡാഷ്ബോർഡിലേക്ക് കൊണ്ടുപോകും. ഇപ്പോൾ നിങ്ങൾക്ക് പൈത്തണിൽ നിന്ന് അതിലേക്ക് കണക്റ്റ് ചെയ്യാൻ തയ്യാറാണ്.
പൈത്തൺ ക്ലയിൻ്റ് ലൈബ്രറി ഇൻസ്റ്റാൾ ചെയ്യുന്നു
ഇൻഫ്ലക്സ്ഡിബി 2.x, ക്ലൗഡ് എന്നിവയ്ക്കുള്ള ഔദ്യോഗിക പൈത്തൺ ക്ലയിൻ്റ് ലൈബ്രറിയാണ് `influxdb-client`. ഇത് ഇൻസ്റ്റാൾ ചെയ്യാൻ, pip ഉപയോഗിക്കുക:
pip install influxdb-client
ഈ ലൈബ്രറി നിങ്ങളുടെ ഇൻഫ്ലക്സ്ഡിബി ഇൻസ്റ്റൻസ് പ്രോഗ്രാം ഉപയോഗിച്ച് എഴുതാനും ചോദ്യം ചെയ്യാനും കൈകാര്യം ചെയ്യാനും ആവശ്യമായ എല്ലാ ഉപകരണങ്ങളും നൽകുന്നു.
പൈത്തൺ ഉപയോഗിച്ച് ഡാറ്റ എഴുതുന്നു
നമ്മുടെ എൻവയോൺമെൻ്റ് തയ്യാറായതിനാൽ, പൈത്തൺ ഉപയോഗിച്ച് ഇൻഫ്ലക്സ്ഡിബിയിലേക്ക് ഡാറ്റ എഴുതാനുള്ള വിവിധ വഴികൾ നമുക്ക് പരിശോധിക്കാം. ഡാറ്റ കാര്യക്ഷമമായി എഴുതുന്നത് പ്രകടനത്തിന് നിർണായകമാണ്, പ്രത്യേകിച്ച് ഉയർന്ന ത്രൂപുട്ട് ആപ്ലിക്കേഷനുകളിൽ.
ഇൻഫ്ലക്സ്ഡിബിയുമായി ബന്ധിപ്പിക്കുന്നു
ഏത് സ്ക്രിപ്റ്റിലെയും ആദ്യപടി ഒരു കണക്ഷൻ സ്ഥാപിക്കുക എന്നതാണ്. നിങ്ങൾക്ക് URL, നിങ്ങളുടെ ഓർഗനൈസേഷൻ്റെ പേര്, മുമ്പ് സംരക്ഷിച്ച ടോക്കൺ എന്നിവ ആവശ്യമായി വരും.
ടോക്കണുകൾ പോലുള്ള തന്ത്രപ്രധാനമായ വിവരങ്ങൾ നിങ്ങളുടെ സ്ക്രിപ്റ്റിൽ ഹാർഡ്കോഡ് ചെയ്യുന്നതിന് പകരം എൻവയോൺമെൻ്റ് വേരിയബിളുകളിൽ സംഭരിക്കുന്നത് ഒരു മികച്ച രീതിയാണ്. എന്നിരുന്നാലും, ഈ ഉദാഹരണത്തിനായി, വ്യക്തതയ്ക്കായി ഞങ്ങൾ അവ വേരിയബിളുകളായി നിർവചിക്കും.
import influxdb_client
from influxdb_client.client.write_api import SYNCHRONOUS
# --- Connection Details ---
url = "http://localhost:8086"
token = "YOUR_SUPER_SECRET_TOKEN" # Replace with your actual token
org = "my-org"
bucket = "my-bucket"
# --- Instantiate the Client ---
client = influxdb_client.InfluxDBClient(url=url, token=token, org=org)
# --- Get the Write API ---
# SYNCHRONOUS mode writes data immediately. For high-throughput, consider ASYNCHRONOUS.
write_api = client.write_api(write_options=SYNCHRONOUS)
print("Successfully connected to InfluxDB!")
ഒരൊറ്റ ഡാറ്റാ പോയിൻ്റ് ഘടനാപ്പെടുത്തുകയും എഴുതുകയും ചെയ്യുന്നു
ക്ലയിൻ്റ് ലൈബ്രറി ഒരു `Point` ഒബ്ജക്റ്റ് നൽകുന്നു, ഇത് ഇൻഫ്ലക്സ്ഡിബി ഡാറ്റാ മോഡൽ അനുസരിച്ച് നിങ്ങളുടെ ഡാറ്റ ക്രമീകരിക്കാനുള്ള ഒരു സൗകര്യപ്രദമായ മാർഗ്ഗമാണ്.
ഒരു സെർവറിൻ്റെ സിപിയു ലോഡ് പ്രതിനിധീകരിക്കുന്ന ഒരു ഡാറ്റാ പോയിൻ്റ് നമുക്ക് എഴുതാം.
from influxdb_client import Point
import time
# Create a data point using the fluent API
point = (
Point("system_metrics")
.tag("host", "server-alpha")
.tag("region", "eu-central-1")
.field("cpu_load_percent", 12.34)
.field("memory_usage_mb", 567.89)
.time(int(time.time_ns())) # Use nanosecond precision timestamp
)
# Write the point to the bucket
write_api.write(bucket=bucket, org=org, record=point)
print(f"Wrote a single point to '{bucket}'.")
ഈ ഉദാഹരണത്തിൽ, `system_metrics` എന്നത് മെഷർമെൻ്റ് ആണ്, `host`, `region` എന്നിവ ടാഗുകളാണ്, `cpu_load_percent`, `memory_usage_mb` എന്നിവ ഫീൽഡുകളാണ്. നിലവിലെ ടൈംസ്റ്റാമ്പ് നാനോസെക്കൻഡ് കൃത്യതയോടെ ലഭിക്കാൻ ഞങ്ങൾ `time.time_ns()` ഉപയോഗിക്കുന്നു, ഇത് ഇൻഫ്ലക്സ്ഡിബിയുടെ നേറ്റീവ് കൃത്യതയാണ്.
പ്രകടനത്തിനായി ബാച്ച് റൈറ്റിംഗ്
ഡാറ്റാ പോയിൻ്റുകൾ ഒന്നൊന്നായി എഴുതുന്നത് കാര്യക്ഷമമല്ലാത്തതും അനാവശ്യമായ നെറ്റ്വർക്ക് ഓവർഹെഡ് ഉണ്ടാക്കുന്നതുമാണ്. ഏതൊരു യഥാർത്ഥ ലോക ആപ്ലിക്കേഷനും, നിങ്ങളുടെ എഴുത്തുകൾ ബാച്ച് ചെയ്യണം. `write_api`-ക്ക് `Point` ഒബ്ജക്റ്റുകളുടെ ഒരു ലിസ്റ്റ് സ്വീകരിക്കാൻ കഴിയും.
ഒന്നിലധികം സെൻസർ റീഡിംഗുകൾ ശേഖരിച്ച് ഒരു സിംഗിൾ ബാച്ചിൽ എഴുതുന്നത് നമുക്ക് അനുകരിക്കാം.
points = []
# Simulate 5 readings from two different sensors
for i in range(5):
# Sensor 1
point1 = (
Point("environment")
.tag("sensor_id", "A001")
.tag("location", "greenhouse-1")
.field("temperature", 25.1 + i * 0.1)
.field("humidity", 60.5 + i * 0.2)
.time(int(time.time_ns()) - i * 10**9) # Stagger timestamps by 1 second
)
points.append(point1)
# Sensor 2
point2 = (
Point("environment")
.tag("sensor_id", "B002")
.tag("location", "greenhouse-2")
.field("temperature", 22.8 + i * 0.15)
.field("humidity", 55.2 - i * 0.1)
.time(int(time.time_ns()) - i * 10**9)
)
points.append(point2)
# Write the entire batch of points
write_api.write(bucket=bucket, org=org, record=points)
print(f"Wrote a batch of {len(points)} points to '{bucket}'.")
ഇൻഫ്ലക്സ്ഡിബി API-യിലേക്ക് നടത്തുന്ന HTTP അഭ്യർത്ഥനകളുടെ എണ്ണം കുറയ്ക്കുന്നതിലൂടെ ഈ സമീപനം റൈറ്റ് ത്രൂപുട്ട് ഗണ്യമായി മെച്ചപ്പെടുത്തുന്നു.
പാണ്ടാസ് ഡാറ്റാഫ്രെയിമുകളിൽ നിന്ന് ഡാറ്റ എഴുതുന്നു
ഡാറ്റാ സയൻ്റിസ്റ്റുകൾക്കും അനലിസ്റ്റുകൾക്കും, പാണ്ടാസ് ആണ് തിരഞ്ഞെടുക്കുന്ന ഉപകരണം. `influxdb-client` ലൈബ്രറിക്ക് ഒരു പാണ്ടാസ് ഡാറ്റാഫ്രെയിമിൽ നിന്ന് നേരിട്ട് ഡാറ്റ എഴുതുന്നതിന് മികച്ച പിന്തുണയുണ്ട്, ഇത് അവിശ്വസനീയമാംവിധം ശക്തമാണ്.
മെഷർമെൻ്റുകൾ, ടാഗുകൾ, ഫീൽഡുകൾ, ടൈംസ്റ്റാമ്പുകൾ എന്നിവയിലേക്ക് ഡാറ്റാഫ്രെയിം കോളങ്ങളെ സ്വയമേവ മാപ്പ് ചെയ്യാൻ ക്ലയിൻ്റിന് കഴിയും.
import pandas as pd
import numpy as np
# Create a sample DataFrame
now = pd.Timestamp.now(tz='UTC')
dates = pd.to_datetime([now - pd.Timedelta(minutes=i) for i in range(10)])
data = {
'price': np.random.uniform(100, 110, 10),
'volume': np.random.randint(1000, 5000, 10),
'symbol': 'XYZ',
'exchange': 'GLOBALEX'
}
df = pd.DataFrame(data=data, index=dates)
# The DataFrame must have a timezone-aware DatetimeIndex
print("Sample DataFrame:")
print(df)
# Write the DataFrame to InfluxDB
# data_frame_measurement_name: The measurement name to use
# data_frame_tag_columns: Columns to be treated as tags
write_api.write(
bucket=bucket,
record=df,
data_frame_measurement_name='stock_prices',
data_frame_tag_columns=['symbol', 'exchange']
)
print(f"\nWrote DataFrame to measurement 'stock_prices' in bucket '{bucket}'.")
# Remember to close the client
client.close()
ഈ ഉദാഹരണത്തിൽ, ഡാറ്റാഫ്രെയിമിൻ്റെ ഇൻഡെക്സ് യാന്ത്രികമായി ടൈംസ്റ്റാമ്പായി ഉപയോഗിക്കുന്നു. `symbol`, `exchange` കോളങ്ങൾ ടാഗുകളായിരിക്കണം എന്നും, ശേഷിക്കുന്ന സംഖ്യാപരമായ കോളങ്ങൾ (`price`, `volume`) ഫീൽഡുകളാകുമെന്നും ഞങ്ങൾ വ്യക്തമാക്കുന്നു.
പൈത്തണും ഫ്ലക്സും ഉപയോഗിച്ച് ഡാറ്റാ ചോദ്യം ചെയ്യുന്നു
ഡാറ്റ സംഭരിക്കുന്നത് ഒരു യുദ്ധത്തിന്റെ പകുതി മാത്രമാണ്. അതിനെ ചോദ്യം ചെയ്യാനും വിശകലനം ചെയ്യാനുമുള്ള കഴിവിലാണ് യഥാർത്ഥ ശക്തി. ഇൻഫ്ലക്സ്ഡിബി 2.x ഫ്ലക്സ് എന്ന് പേരുള്ള ഒരു ശക്തമായ ഡാറ്റാ സ്ക്രിപ്റ്റിംഗ് ഭാഷ ഉപയോഗിക്കുന്നു.
ഫ്ലക്സിൻ്റെ ആമുഖം
ടൈം സീരീസ് ഡാറ്റയെ ചോദ്യം ചെയ്യാനും, വിശകലനം ചെയ്യാനും, അതിൽ പ്രവർത്തിക്കാനും രൂപകൽപ്പന ചെയ്ത ഒരു ഫംഗ്ഷണൽ ഭാഷയാണ് ഫ്ലക്സ്. ഇത് ഒരു പൈപ്പ്-ഫോർവേഡ് ഓപ്പറേറ്റർ (`|>`) ഉപയോഗിച്ച് ഫംഗ്ഷനുകളെ ഒരുമിച്ച് ചേർക്കുന്നു, ഇത് വായിക്കാൻ എളുപ്പമുള്ളതും വ്യക്തവുമായ ഒരു ഡാറ്റാ പ്രോസസ്സിംഗ് പൈപ്പ്ലൈൻ സൃഷ്ടിക്കുന്നു.
ഒരു ലളിതമായ ഫ്ലക്സ് ചോദ്യം ഇപ്രകാരമാണ്:
from(bucket: "my-bucket")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "system_metrics")
|> filter(fn: (r) => r.host == "server-alpha")
ഈ ചോദ്യം `my-bucket` എന്നതിൽ നിന്ന് ഡാറ്റ തിരഞ്ഞെടുക്കുകയും, കഴിഞ്ഞ ഒരു മണിക്കൂറിലേക്ക് ഫിൽട്ടർ ചെയ്യുകയും, തുടർന്ന് ഒരു പ്രത്യേക മെഷർമെൻ്റിനും ഹോസ്റ്റ് ടാഗിനുമായി കൂടുതൽ ഫിൽട്ടർ ചെയ്യുകയും ചെയ്യുന്നു.
പൈത്തണിലെ നിങ്ങളുടെ ആദ്യ ഫ്ലക്സ് ചോദ്യം
ഡാറ്റ ചോദ്യം ചെയ്യുന്നതിന്, നിങ്ങളുടെ ക്ലയിൻ്റിൽ നിന്ന് ഒരു `QueryAPI` ഒബ്ജക്റ്റ് നേടേണ്ടതുണ്ട്.
# --- Re-establish connection for querying ---
client = influxdb_client.InfluxDBClient(url=url, token=token, org=org)
query_api = client.query_api()
# --- Define the Flux query ---
flux_query = f'''
from(bucket: "{bucket}")
|> range(start: -10m)
|> filter(fn: (r) => r._measurement == "environment")
'''
# --- Execute the query ---
result_tables = query_api.query(query=flux_query, org=org)
print("Query executed. Processing results...")
ചോദ്യഫലങ്ങൾ പ്രോസസ്സ് ചെയ്യുന്നു
ഒരു ഫ്ലക്സ് ചോദ്യത്തിന്റെ ഫലം പട്ടികകളുടെ ഒരു സ്ട്രീം ആണ്. ഓരോ പട്ടികയും ഡാറ്റാ പോയിൻ്റുകളുടെ ഒരു തനതായ ഗ്രൂപ്പിനെ (മെഷർമെൻ്റ്, ടാഗുകൾ മുതലായവ പ്രകാരം ഗ്രൂപ്പുചെയ്തത്) പ്രതിനിധീകരിക്കുന്നു. നിങ്ങൾക്ക് ഈ പട്ടികകളിലൂടെയും അവയിലെ റെക്കോർഡുകളിലൂടെയും ആവർത്തിക്കാം.
# Iterate through tables
for table in result_tables:
print(f"--- Table (series for tags: {table.records[0].values}) ---")
# Iterate through records in each table
for record in table.records:
print(f"Time: {record.get_time()}, Field: {record.get_field()}, Value: {record.get_value()}")
print("\nFinished processing query results.")
ഈ റോ പ്രോസസ്സിംഗ് കസ്റ്റം ലോജിക്കിന് ഉപയോഗപ്രദമാണ്, എന്നാൽ ഡാറ്റാ വിശകലനത്തിനായി, ഡാറ്റ നേരിട്ട് പരിചിതമായ ഒരു ഘടനയിലേക്ക് ലഭിക്കുന്നത് പലപ്പോഴും കൂടുതൽ സൗകര്യപ്രദമാണ്.
വിപുലമായ ചോദ്യം ചെയ്യൽ: അഗ്രഗേഷൻ ആൻഡ് ട്രാൻസ്ഫോർമേഷൻ
നിങ്ങൾ അഗ്രഗേഷനുകൾ ചെയ്യുമ്പോൾ ഫ്ലക്സ് ശരിക്കും തിളങ്ങുന്നു. നമ്മൾ നേരത്തെ എഴുതിയ `environment` ഡാറ്റയുടെ ഓരോ 2 മിനിറ്റിലും ശരാശരി താപനില കണ്ടെത്താം.
flux_aggregate_query = f'''
from(bucket: "{bucket}")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "environment")
|> filter(fn: (r) => r._field == "temperature")
|> window(every: 2m)
|> mean()
|> yield(name: "mean_temperature")
'''
# Execute and process
aggregated_results = query_api.query(query=flux_aggregate_query, org=org)
print("\n--- Aggregated Results (Average Temperature per 2m) ---")
for table in aggregated_results:
for record in table.records:
print(f"Time Window End: {record.get_time()}, Average Temp: {record.get_value():.2f}")
ഇവിടെ, `window(every: 2m)` ഡാറ്റയെ 2 മിനിറ്റ് ഇടവേളകളായി ഗ്രൂപ്പുചെയ്യുന്നു, കൂടാതെ `mean()` ഓരോ വിൻഡോയുടെയും ശരാശരി മൂല്യം കണക്കാക്കുന്നു.
ഒരു പാണ്ടാസ് ഡാറ്റാഫ്രെയിമിലേക്ക് നേരിട്ട് ചോദ്യം ചെയ്യുന്നു
ഇൻഫ്ലക്സ്ഡിബിയെ പൈത്തൺ ഡാറ്റാ സയൻസ് സ്റ്റാക്കുമായി സംയോജിപ്പിക്കാനുള്ള ഏറ്റവും തടസ്സമില്ലാത്ത മാർഗ്ഗം ഒരു പാണ്ടാസ് ഡാറ്റാഫ്രെയിമിലേക്ക് നേരിട്ട് ചോദ്യം ചെയ്യുക എന്നതാണ്. `query_api`-ക്ക് ഇതിനായി ഒരു പ്രത്യേക രീതിയുണ്ട്: `query_data_frame()`.
# --- Query stock prices into a DataFrame ---
flux_df_query = f'''
from(bucket: "{bucket}")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "stock_prices")
|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")
'''
# Execute the query
df_result = query_api.query_data_frame(query=flux_df_query, org=org)
# The result might have extra columns, let's clean it up
if not df_result.empty:
df_result = df_result[['_time', 'symbol', 'price', 'volume']]
df_result.set_index('_time', inplace=True)
print("\n--- Query Result as Pandas DataFrame ---")
print(df_result)
else:
print("\nQuery returned no data.")
client.close()
ഫ്ലക്സിലെ `pivot()` ഫംഗ്ഷൻ ഇവിടെ നിർണായകമാണ്. ഇത് ഇൻഫ്ലക്സ്ഡിബിയുടെ ടോൾ ഫോർമാറ്റിൽ (ഒരു ഫീൽഡിന് ഒരു നിര) നിന്ന് ഡാറ്റയെ ഒരു വൈഡ് ഫോർമാറ്റിലേക്ക് (ഓരോ ഫീൽഡിനും കോളങ്ങൾ) മാറ്റുന്നു, ഇത് ഒരു ഡാറ്റാഫ്രെയിമിൽ നിങ്ങൾ സാധാരണയായി പ്രതീക്ഷിക്കുന്ന ഒന്നാണ്. ഡാറ്റ ഇപ്പോൾ പാണ്ടാസിൽ ഉള്ളതിനാൽ, വിഷ്വലൈസേഷനും മെഷീൻ ലേണിംഗിനുമായി നിങ്ങൾക്ക് Matplotlib, Seaborn, അല്ലെങ്കിൽ scikit-learn പോലുള്ള ലൈബ്രറികൾ ഉപയോഗിക്കാം.
പ്രായോഗിക ഉപയോഗം: സിസ്റ്റം മെട്രിക്സ് നിരീക്ഷിക്കൽ
പ്രായോഗികമായ ഒരു ഉദാഹരണം ഉപയോഗിച്ച് നമുക്ക് എല്ലാം ഒരുമിച്ച് ചേർക്കാം: പ്രാദേശിക സിസ്റ്റം മെട്രിക്സ് (സിപിയുവും മെമ്മറിയും) നിരീക്ഷിച്ച് ഇൻഫ്ലക്സ്ഡിബിയിലേക്ക് ലോഗ് ചെയ്യുന്ന ഒരു പൈത്തൺ സ്ക്രിപ്റ്റ്.
ആദ്യം, നിങ്ങൾക്ക് `psutil` ലൈബ്രറി ആവശ്യമായി വരും:
pip install psutil
മോണിറ്ററിംഗ് സ്ക്രിപ്റ്റ്
ഈ സ്ക്രിപ്റ്റ് അനന്തമായി പ്രവർത്തിക്കുകയും, ഓരോ 10 സെക്കൻഡിലും ഡാറ്റ ശേഖരിക്കുകയും എഴുതുകയും ചെയ്യും.
import influxdb_client
from influxdb_client import Point
from influxdb_client.client.write_api import SYNCHRONOUS
import psutil
import time
import socket
# --- Configuration ---
url = "http://localhost:8086"
token = "YOUR_SUPER_SECRET_TOKEN" # Replace with your token
org = "my-org"
bucket = "monitoring"
# Get the hostname to use as a tag
hostname = socket.gethostname()
# --- Main Monitoring Loop ---
def monitor_system():
print("Starting system monitor...")
with influxdb_client.InfluxDBClient(url=url, token=token, org=org) as client:
write_api = client.write_api(write_options=SYNCHRONOUS)
while True:
try:
# Get metrics
cpu_percent = psutil.cpu_percent(interval=1)
memory_percent = psutil.virtual_memory().percent
# Create data points
cpu_point = (
Point("system_stats")
.tag("host", hostname)
.field("cpu_usage_percent", float(cpu_percent))
)
memory_point = (
Point("system_stats")
.tag("host", hostname)
.field("memory_usage_percent", float(memory_percent))
)
# Write batch
write_api.write(bucket=bucket, org=org, record=[cpu_point, memory_point])
print(f"Logged CPU: {cpu_percent}%, Memory: {memory_percent}%")
# Wait for the next interval
time.sleep(10)
except KeyboardInterrupt:
print("\nMonitoring stopped by user.")
break
except Exception as e:
print(f"An error occurred: {e}")
time.sleep(10) # Wait before retrying
if __name__ == "__main__":
# Note: You may need to create the 'monitoring' bucket in the InfluxDB UI first.
monitor_system()
ഡാറ്റാ വിഷ്വലൈസ് ചെയ്യുന്നു
ഈ സ്ക്രിപ്റ്റ് കുറച്ച് മിനിറ്റ് പ്രവർത്തിപ്പിച്ചതിന് ശേഷം, `http://localhost:8086` എന്നതിലെ ഇൻഫ്ലക്സ്ഡിബി UI-ലേക്ക് തിരികെ പോകുക. ഡാറ്റാ എക്സ്പ്ലോറർ (അല്ലെങ്കിൽ എക്സ്പ്ലോർ) ടാബിലേക്ക് നാവിഗേറ്റ് ചെയ്യുക. നിങ്ങളുടെ `monitoring` ബക്കറ്റ്, `system_stats` മെഷർമെൻ്റ്, വിഷ്വലൈസ് ചെയ്യാനാഗ്രഹിക്കുന്ന ഫീൽഡുകൾ എന്നിവ തിരഞ്ഞെടുക്കാൻ UI ബിൽഡർ ഉപയോഗിക്കുക. നിങ്ങളുടെ പൈത്തൺ സ്ക്രിപ്റ്റ് ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്ന നിങ്ങളുടെ സിസ്റ്റത്തിൻ്റെ സിപിയു, മെമ്മറി ഉപയോഗം എന്നിവയുടെ തത്സമയ ഗ്രാഫ് നിങ്ങൾക്ക് കാണാൻ കഴിയും!
മികച്ച രീതികളും വിപുലമായ വിഷയങ്ങളും
ശക്തവും സ്കേലബിളുമായ സിസ്റ്റങ്ങൾ നിർമ്മിക്കുന്നതിന്, ഈ മികച്ച രീതികൾ പിന്തുടരുക.
സ്കീമ ഡിസൈൻ: ടാഗുകൾ vs. ഫീൽഡുകൾ
- നിങ്ങൾ ചോദ്യം ചെയ്യാൻ ഉദ്ദേശിക്കുന്ന മെറ്റാഡാറ്റയ്ക്ക് ടാഗുകൾ ഉപയോഗിക്കുക. ടാഗുകൾ ഇൻഡെക്സ് ചെയ്തിരിക്കുന്നതിനാൽ, അവയിലെ `filter()` പ്രവർത്തനങ്ങൾ വളരെ വേഗത്തിലാകും. ഹോസ്റ്റ്നാമുകൾ, പ്രദേശങ്ങൾ, സെൻസർ ഐഡികൾ, അല്ലെങ്കിൽ നിങ്ങളുടെ മെഷർമെൻ്റുകൾ വിവരിക്കുന്ന ഏതൊരു താഴ്ന്ന-ഇടത്തരം കാർഡിനാലിറ്റി ഡാറ്റയും ടാഗുകൾക്ക് നല്ല ഉദാഹരണങ്ങളാണ്.
- അസംസ്കൃത ഡാറ്റാ മൂല്യങ്ങൾക്ക് ഫീൽഡുകൾ ഉപയോഗിക്കുക. ഫീൽഡുകൾ ഇൻഡെക്സ് ചെയ്യപ്പെടാത്തതിനാൽ, ഫീൽഡ് മൂല്യം അനുസരിച്ച് ഫിൽട്ടർ ചെയ്യുന്നത് വളരെ മന്ദഗതിയിലാണ്. ഓരോ ഡാറ്റാ പോയിൻ്റിനൊപ്പവും മാറുന്ന ഏതൊരു മൂല്യവും (താപനില അല്ലെങ്കിൽ വില പോലെ) ഒരു ഫീൽഡായിരിക്കണം.
- കാർഡിനാലിറ്റി പ്രധാനമാണ്. ടാഗുകളിലെ ഉയർന്ന കാർഡിനാലിറ്റി (ഒരു വലിയ സിസ്റ്റത്തിലെ യൂസർ ഐഡി പോലെ നിരവധി അദ്വിതീയ മൂല്യങ്ങൾ) പ്രകടന പ്രശ്നങ്ങളിലേക്ക് നയിച്ചേക്കാം. നിങ്ങളുടെ സ്കീമ രൂപകൽപ്പന ചെയ്യുമ്പോൾ ഇത് ശ്രദ്ധിക്കുക.
തെറ്റ് കൈകാര്യം ചെയ്യലും പ്രതിരോധശേഷിയും
നെറ്റ്വർക്ക് കണക്ഷനുകൾ പരാജയപ്പെടാം. സാധ്യതയുള്ള ഒഴിവാക്കലുകൾ ഭംഗിയായി കൈകാര്യം ചെയ്യാൻ നിങ്ങളുടെ എഴുത്ത്, ചോദ്യം ചെയ്യൽ കോളുകൾ എല്ലായ്പ്പോഴും `try...except` ബ്ലോക്കുകളിൽ പൊതിയുക. കൂടുതൽ പ്രതിരോധശേഷിക്കായി നിങ്ങൾക്ക് കോൺഫിഗർ ചെയ്യാൻ കഴിയുന്ന ബിൽറ്റ്-ഇൻ റിട്രൈ സ്ട്രാറ്റജികളും `influxdb-client`-ൽ ഉൾപ്പെടുന്നു.
സുരക്ഷ: ടോക്കൺ മാനേജ്മെൻ്റ്
- നിങ്ങളുടെ സോഴ്സ് കോഡിൽ ടോക്കണുകൾ ഒരിക്കലും ഹാർഡ്കോഡ് ചെയ്യരുത്. എൻവയോൺമെൻ്റ് വേരിയബിളുകളോ HashiCorp Vault അല്ലെങ്കിൽ AWS Secrets Manager പോലുള്ള ഒരു സീക്രട്ട്സ് മാനേജ്മെൻ്റ് സേവനമോ ഉപയോഗിക്കുക.
- ഫൈൻ-ഗ്രെയ്ൻഡ് ടോക്കണുകൾ ഉപയോഗിക്കുക. ഇൻഫ്ലക്സ്ഡിബി UI-യിൽ, API ടോക്കണുകൾ എന്നതിന് കീഴിൽ, നിങ്ങൾക്ക് പ്രത്യേക അനുമതികളുള്ള പുതിയ ടോക്കണുകൾ സൃഷ്ടിക്കാൻ കഴിയും. ഡാറ്റ മാത്രം എഴുതുന്ന ഒരു ആപ്ലിക്കേഷനായി, ഒരു പ്രത്യേക ബക്കറ്റിലേക്ക് റൈറ്റ്-ഓൺലി ആക്സസ് ഉള്ള ഒരു ടോക്കൺ സൃഷ്ടിക്കുക. ഇത് ഏറ്റവും കുറഞ്ഞ പ്രത്യേകാവകാശത്തിൻ്റെ തത്വം പിന്തുടരുന്നു.
ഡാറ്റാ റീടെൻഷൻ പോളിസികൾ
ടൈം സീരീസ് ഡാറ്റയ്ക്ക് അവിശ്വസനീയമാംവിധം വേഗത്തിൽ വളരാൻ കഴിയും. ഇൻഫ്ലക്സ്ഡിബിയുടെ റീടെൻഷൻ പോളിസികൾ ഒരു നിശ്ചിത കാലയളവിനേക്കാൾ പഴയ ഡാറ്റ സ്വയമേവ ഇല്ലാതാക്കുന്നു. നിങ്ങളുടെ ഡാറ്റാ ലൈഫ്സൈക്കിൾ ആസൂത്രണം ചെയ്യുക: നിങ്ങൾക്ക് ഉയർന്ന റെസല്യൂഷൻ ഡാറ്റ 30 ദിവസത്തേക്ക് സൂക്ഷിക്കാം, എന്നാൽ ഡൗൺസാമ്പിൾ ചെയ്ത, അഗ്രഗേറ്റ് ചെയ്ത ഡാറ്റ (ഉദാഹരണത്തിന്, പ്രതിദിന ശരാശരികൾ) മറ്റൊരു ബക്കറ്റിൽ എന്നെന്നേക്കുമായി സംഭരിക്കാം.
ഉപസംഹാരം
പൈത്തണിൻ്റെയും ഇൻഫ്ലക്സ്ഡിബിയുടെയും സംയോജനം ഏതൊരു ടൈം സീരീസ് ഡാറ്റാ വെല്ലുവിളികളെയും നേരിടാൻ ശക്തമായ ഒരു പ്ലാറ്റ്ഫോം നൽകുന്നു. ഇൻഫ്ലക്സ്ഡിബിയുടെ ഡാറ്റാ മോഡലിൻ്റെ അടിസ്ഥാനപരമായ ആശയങ്ങൾ മുതൽ ഔദ്യോഗിക പൈത്തൺ ക്ലയിൻ്റ് ഉപയോഗിച്ച് ഡാറ്റ എഴുതുന്നതിൻ്റെയും ചോദ്യം ചെയ്യുന്നതിൻ്റെയും പ്രായോഗികതകളിലേക്ക് ഞങ്ങൾ യാത്ര ചെയ്തു. സിംഗിൾ പോയിൻ്റുകൾ എങ്ങനെ എഴുതാമെന്നും, പ്രകടനത്തിനായി ഡാറ്റാ ബാച്ച് ചെയ്യാമെന്നും, ശക്തമായ പാണ്ടാസ് ലൈബ്രറിയുമായി തടസ്സമില്ലാതെ സംയോജിപ്പിക്കാമെന്നും നിങ്ങൾ പഠിച്ചു.
സ്കീമ ഡിസൈൻ, സുരക്ഷ, പിശക് കൈകാര്യം ചെയ്യൽ എന്നിവയ്ക്കുള്ള മികച്ച രീതികൾ പിന്തുടരുന്നതിലൂടെ, സ്കേലബിൾ, റെസിലിയൻ്റ്, ഉൾക്കാഴ്ചയുള്ള ആപ്ലിക്കേഷനുകൾ നിർമ്മിക്കാൻ നിങ്ങൾ ഇപ്പോൾ സജ്ജരായിരിക്കുന്നു. ടൈം സീരീസ് ഡാറ്റയുടെ ലോകം വിശാലമാണ്, അത് പര്യവേക്ഷണം ചെയ്യാനുള്ള അടിസ്ഥാനപരമായ ടൂളുകൾ ഇപ്പോൾ നിങ്ങളുടെ പക്കലുണ്ട്.
നിങ്ങളുടെ യാത്രയിലെ അടുത്ത ഘട്ടങ്ങളിൽ ഇൻഫ്ലക്സ്ഡിബിയുടെ ടാസ്ക് എഞ്ചിൻ ഓട്ടോമേറ്റഡ് ഡൗൺസാമ്പിളിങ്ങിനായി ഉപയോഗിക്കുക, അനോമലി കണ്ടെത്തലിനായി അലേർട്ടുകൾ സജ്ജീകരിക്കുക, അല്ലെങ്കിൽ ഗ്രാഫാന പോലുള്ള വിഷ്വലൈസേഷൻ ടൂളുകളുമായി സംയോജിപ്പിക്കുക എന്നിവ ഉൾപ്പെടാം. സാധ്യതകൾ അനന്തമാണ്. ഇന്ന് തന്നെ നിങ്ങളുടെ ടൈം സീരീസ് ആപ്ലിക്കേഷനുകൾ നിർമ്മിക്കാൻ ആരംഭിക്കുക!